home *** CD-ROM | disk | FTP | other *** search
- // SCRIPTING
- // StarGate SG-1 TV Tome import
- // Created by Alex Iribarren
- // http://alex.iribarren.com
- // Last update 04/04/2004
-
- (***************************************************
- * Episode importation script for: *
- * TV Tome, http://www.tvtome.com *
- * *
- * (c) 2003 Alex Iribarren alexiri@terra.es *
- * *
- * Modified version of IMDB batch import by: *
- * Antoine Potten antoine@buypin.com *
- * Contributors : *
- * Danny Falkov *
- * Kai Blankenhorn *
- * *
- * For use with Ant Movie Catalog 3.4.0 *
- * www.ant.be.tf/moviecatalog ╖╖╖ www.buypin.com *
- * *
- * The source code of the script can be used in *
- * another program only if full credits to *
- * script author and a link to Ant Movie Catalog *
- * website are given in the About box or in *
- * the documentation of the program *
- ***************************************************)
-
- program TvTome;
-
- //Constants
- Const
- AddNotes = true;
-
- var
- EpName, EpNumber: string;
- MovieName: string;
-
- function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
- var
- i: Integer;
- begin
- result := -1;
- if StartAt < 0 then
- StartAt := 0;
- for i := StartAt to List.Count-1 do
- if Pos(Pattern, List.GetString(i)) <> 0 then
- begin
- result := i;
- Break;
- end;
- end;
-
- procedure AnalyzePage(Address: string);
- var
- Page: TStringList;
- LineNr, StartPos: Integer;
- Line, Season: string;
- begin
- Page := TStringList.Create;
- Page.Text := GetPage(Address);
-
- PickTreeClear;
- PickTreeAdd('Searching for ' + EpName, '');
- LineNr := 0;
- Address := '';
-
- repeat
- LineNr := FindLine('<tr><td colspan="6"><', Page, LineNr);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- StartPos := pos('<b>', Line) + 3;
- Season := copy(Line, StartPos, pos('</b>', Line) - StartPos);
- PickTreeAdd(Season + ':', '');
- Address := AddEpisodeTitles(Page, LineNr);
- if (Address <> '') then Break;
- LineNr := LineNr + 1;
- end;
- until (LineNr < 0);
-
- if (Address <> '') then
- begin
- AnalyzeEpisodePage(Address);
- end else begin
- if PickTreeExec(Address) then
- AnalyzeEpisodePage(Address);
- end;
- Page.Free;
- end;
-
- procedure AnalyzeEpisodePage(Address: string);
- var
- Line, TempStr: string;
- BeginPos: Integer;
- Page: TStringList;
- LineNr: Integer;
- begin
- Page := TStringList.Create;
- Page.Text := GetPage(Address);
-
- // URL
- SetField(fieldURL, Address);
-
- // Episode Number
- if EpNumber <> '' then
- SetField(fieldTranslatedTitle, EpNumber);
-
- // Original Title
- LineNr := FindLine('<table width=777><tr><td align=center>', Page, 0)+1;
- Line := Page.GetString(LineNr);
- CutAfter(Line,'<h1>');
- SetField(fieldOriginalTitle, copy(Line, 1, pos('</h1>',Line)-1));
-
- // First Aired
- LineNr := FindLine('>First Aired<', Page, 0);
- Line := Page.GetString(LineNr);
- CutAfter(Line,'First Aired</td><td class="row');
- SetField(fieldComments, 'First aired: ' + copy(Line, 4, pos('</td></tr>',Line)-4));
- SetField(fieldYear, copy(Line, pos(', ',Line)+2, 4));
-
- // Rating
- LineNr := FindLine('nowrap>Avg. Rating:</td>', Page, 0);
- Line := Page.GetString(LineNr);
- TempStr := Line + #13#10;
- CutAfter(Line,'</td><td>');
- SetField(fieldRating,copy(Line, 1, pos('.',Line)-1));
- LineNr := FindLine('nowrap>Votes Cast:</td>', Page, 0);
- Line := Page.GetString(LineNr);
- TempStr := TempStr + Line + #13#10;
- Line := Page.GetString(LineNr + 1);
- TempStr := TempStr + Line + #13#10;
- TempStr := StringReplaceAll(TempStr, '</td><td>', ' ');
- HTMLRemoveTags(TempStr);
- SetField(fieldComments, GetField(fieldComments)
- + #13#10'-------------------------------------------------------------------------------'#13#10
- +'RATINGS:' + #13#10 + TempStr);
-
- // Production Code
- LineNr := FindLine('>Production Code<', Page, 0);
- Line := Page.GetString(LineNr);
- CutAfter(Line,'Production Code</td><td class="row2">');
- IF Line <> '' then SetField(fieldMedia,'Production Code: ' + copy(Line, 1, pos('</td></tr>',Line)-1));
-
- // Writer
- LineNr := FindLine('>Writer<', Page, 0);
- Line := Page.GetString(LineNr);
- CutAfter(Line,'<nobr>');
- TempStr := copy(Line, 1, pos('</nobr><br></td></tr>',Line)-1);
- HTMLRemoveTags(TempStr);
- SetField(fieldProducer, 'Writer: ' + TempStr);
-
- // Director
- LineNr := FindLine('>Director<', Page, 0);
- Line := Page.GetString(LineNr);
- CutAfter(Line,'<nobr>');
- TempStr := copy(Line, 1, pos('</nobr><br></td></tr>',Line)-1);
- HTMLRemoveTags(TempStr);
- SetField(fieldDirector, TempStr);
-
- // Guest Stars
- LineNr := FindLine('<b>Guest Stars:</b>', Page, 0) + 1;
- TempStr := Page.GetString(LineNr-1);
- repeat
- Line := Page.GetString(LineNr);
- TempStr := TempStr + copy(Line, pos('">',Line) + 2, pos('</nobr>',Line)) + #13#10;
- LineNr := LineNr + 1;
- until (pos('</td></tr>', Line) > 0);
- HTMLRemoveTags(TempStr);
- SetField(fieldActors, TempStr);
-
- // Description
- LineNr := FindLine('<a name="synopsis">', Page, 0);
- LineNr := FindLine('<tr><td>', Page, LineNr) + 1;
- TempStr := '';
- repeat
- Line := Page.GetString(LineNr);
- TempStr := TempStr + Line;
- LineNr := LineNr + 1;
- until (pos('</td></tr>', Line) > 0);
- TempStr := StringReplaceAll(TempStr, '<br>', #13#10);
- HTMLRemoveTags(TempStr);
-
- // Notes
- if AddNotes then
- begin
- LineNr := FindLine('<a name="notes">', Page, 0);
- LineNr := FindLine('<tr><td>', Page, LineNr) + 1;
- TempStr := TempStr + #13#10#13#10;
- repeat
- Line := Page.GetString(LineNr);
- TempStr := TempStr + Line;
- LineNr := LineNr + 1;
- until (pos('</td></tr>', Line) > 0);
- TempStr := StringReplaceAll(TempStr, '<br>', #13#10);
- TempStr := StringReplaceAll(TempStr, '<li>', #13#10#43#32);
- HTMLRemoveTags(TempStr);
- end;
-
- // Add Description to database
- SetField(fieldDescription, TempStr);
-
- Page.Free;
- DisplayResults;
- end;
-
-
-
- function AddEpisodeTitles(Page: TStringList; var LineNr: Integer): string;
- var
- Line: string;
- EpTitle, EpAddress, TempNum: string;
- StartPos: Integer;
- begin
- Result := '';
- repeat
- LineNr := LineNr + 1;
- Line := Page.GetString(LineNr);
- StartPos := pos('</td><td nowrap valign=top class="small"> ', Line);
- //Feature Movie add need it code
- if StartPos = 0 then
- Begin
- StartPos := pos('</td><td nowrap class="small"> ', Line);
- if StartPos > 0 then StartPos := StartPos + 31
- end
- else
- StartPos := StartPos + 42;
- if StartPos > 0 then
- begin
- TempNum := copy(Line, StartPos, pos('-', Line) - StartPos);
- EpNumber := 'S';
- If Length(TempNum) < 2 then EpNumber := EpNumber + '0';
- EpNumber := EpNumber + TempNum;
-
- CutAfter(Line,'-');
- TempNum := copy(Line, 1, pos('<', Line) - 1);
- EpNumber := EpNumber + 'E';
- If Length(TempNum) < 2 then EpNumber := EpNumber + '0';
- EpNumber := EpNumber + TempNum;
-
- CutAfter(Line,'href="');
- EpAddress := copy(Line, 1, pos('">', Line) - 1);
- StartPos := pos('">', Line) + 2;
- EpTitle := copy(Line, StartPos, pos('</a>', Line) - StartPos);
- HTMLDecode(EpTitle);
- if (pos(EpName,EpTitle) > 0) then
- begin
- Result := 'http://www.tvtome.com' + EpAddress;
- Break;
- end;
- PickTreeAdd(EpNumber + ': ' + EpTitle, 'http://www.tvtome.com' + EpAddress);
- end;
- if Result <> '' then Break;
- until ((pos('<tr><td colspan="6"> </td></tr>', Line) > 0) or (pos('</table>', Line) > 0));
- end;
-
- procedure CutAfter(var Str: string; Pattern: string);
- begin
- Str := Copy(str, Pos(Pattern, Str) + Length(Pattern), Length(Str));
- end;
-
- function StringReplaceAll(S, Old, New: string): string;
- begin
- while Pos(Old, S) > 0 do
- S := StringReplace(S, Old, New);
- Result := S;
- end;
-
- begin
- if CheckVersion(3,4,0) then
- begin
- if (GetField(fieldURL) <> '') then
- AnalyzeEpisodePage(GetField(fieldURL))
- else
- begin
- EpName := GetField(fieldOriginalTitle);
- if (EpName = '') then
- EpName := GetField(fieldTranslatedTitle);
- end;
- if (EpName = '') then Input('TV Tome Import', 'Enter the title of the episode:', EpName);
- //AnalyzePage('http://www.tvtome.com/tvtome/servlet/EpisodeGuideServlet/showid-249/'); // Futurama
- //AnalyzePage('http://www.tvtome.com/Simpsons/eplist.html'); // The Simpsons
- AnalyzePage('http://www.tvtome.com/StargateSG1/eplist.html'); // Stargate SG-1
- //AnalyzePage('http://www.tvtome.com/tvtome/servlet/EpisodeGuideServlet/showid-5382/'); // Garfield
- end else
- ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.4.0)');
- end.
-
-